const user = require("../sql/user");
const md5 = require("md5");
const jwt = require("jsonwebtoken");

module.exports = (req, res)=>{
    // 解析前端发送的数据
    const un = req.query.username;
    const pw = req.query.password;
    // 根据用户名读取数据库
    user.find({username: un}, (err,data)=>{
        if(data.length > 0){
            // 读到了，判断密码是否一致
            if(data[0].password === md5(pw)){
                // 登录成功
                // 解析出登录日志
                const arr = data[0].lastLoginTime;
                // 限制登录日志长度
                if(arr.length > 9){
                    arr.shift();
                }
                // 添加本次登录日志
                arr.push({time:Date.now()});

                // 更新数据库信息（更新登录日志）
                user.updateOne({
                    username: un,
                    password: md5(pw)
                }, {
                    lastLoginTime: arr
                },()=>{

                    // 方式1：使用cookie进行成功的状态存储
                    // res.cookie("isLogin", "ok");

                    // 方式2：使用session进行成功的状态存储
                    // req.session.isLogin = "ok123";

                    // 方式3：使用token进行成功的状态存储
                    const token = jwt.sign({
                        isLogin: "hello",
                        userId: data[0].userId,
                        hahaha: "哈哈哈"
                    }, "有志者事竟成", {
                        expiresIn: 60 * 30
                    })

                    res.send(JSON.stringify({
                        code:0,
                        msg:"登录成功",
                        data:{
                            id: data[0].userId,
                            username: data[0].username,
                            // 注意：使用token时需要主动将token响应给前端，由前端进行存储
                            token: token
                        }
                    }));
                })
            }else{
                res.send("密码不对");
            }
        }else{
            // 没读到信息，表示用户名不存在
            res.send("用户名不存在");
        }
    })
}